home *** CD-ROM | disk | FTP | other *** search
/ Aminet 30 / Aminet 30 (1999)(Schatztruhe)[!][Apr 1999].iso / Aminet / dev / mui / bcc_src.lha / Parser / Family.h < prev    next >
C/C++ Source or Header  |  1997-06-05  |  857b  |  44 lines

  1. #ifndef FAMILY_H
  2. #define FAMILY_H
  3.  
  4. class Family {
  5.     struct Family *Succ,*Pred,*Head,*Tail,*TailPred;
  6. public:
  7.     Family();
  8.     ~Family();
  9.     void AddTail( Family *child );
  10.     void AddHead( Family *child );
  11.     void AddAfter( Family *child );
  12.     inline Family *Next( void )
  13.     {
  14.         return Succ;
  15.     }
  16.     inline Family *Prev( void )
  17.     {
  18.         return Pred;
  19.     }
  20.     inline Family *First( void )
  21.     {
  22.         return Head;
  23.     }
  24.     Family *Last( void );
  25.     void Remove( void );
  26.     int isEmpty( void );
  27.     void KillChildren( void );
  28.     Family *Parent( void );
  29.     void Disconnect( void );
  30.     void Adopt( Family *f );
  31.     void Swap( Family *f );
  32.     short Count( void );
  33. };
  34.  
  35. #define FScan(typ,var,root)\
  36. typ* var;\
  37. for( var = (typ*)(root)->First(); var->Next(); var = (typ*)var->Next() )
  38.  
  39. #define SafeFScan(typ,var,root)\
  40. typ *var, *varnext;\
  41. for( var = (typ*)(root)->First(); varnext = (typ*)var->Next(); var = varnext )
  42.  
  43. #endif
  44.